#!/usr/bin/env python3
# -*- coding: utf-8 -*-
##############################################
# @Author: DengLibin 榆霖
# @Date: Create in 2022-03-09 17:19:09
# @Description: 导入模块时:
# 1)执行模块中的代码（导包执行包下的__init__.py），
# 2)创建模块对象,对象名称就是模块名，模块中的元素（函数，变量）都绑定到该模块对象上
##############################################
'main'
__author__ = 'DengLibin'

# 内建模块 可以不用导入
import builtins
from struct import pack

# 导入模块 文件名称就是模块名
import animal_tool
import pack1
# 导入包（包名就是文件夹名）中的模块
from pack1 import b, p1, p2
# 子包
from pack1.pack1_1 import p11


def f1():
    animal_tool.show_age(234)
    # p1是一个模块对象对应的class是moudle
    print(type(p1))
    p1.show_p1()
    p2.show_p2()
    p11.show_p11()
    builtins.print('ok')
    # dir函数，不带参数时，返回当前范围内的变量、方法和定义的类型列表；带参数时，返回参数的属性、方法列表
    print(dir(p1))
    # 获取模块的文件路径
    print(p1.__file__) #d:\PycharmProjects\python_study\src\19包和模块\pack1\p1.py
    # 包文件路径
    print(pack1.__file__) # d:\PycharmProjects\python_study\src\19包和模块\pack1\__init__.py
    print("hello".index('e'))


# b 模块中导入a 使用相对路径
def f2():
    b.show_b()


# 执行py文件时，会把当前文件所在路径加入到sys.path
if __name__ == '__main__':
    # f1()
    f2()
